#include<16f877a.h>
#device ADC=8
#include<stdlib.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
//#use delay(clock=11592000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#define RF_A  PIN_D0
#define RF_B  PIN_D1
#define RF_C  PIN_D2
#define RF_D  PIN_D3
#define EEPROM_SCL  PIN_C3
unsigned char x_dir=0,y_dir=0,z_dir=0;
unsigned char flag;

void main()
{

   setup_port_A(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   while(1)
   {
flag=0;
     // delay_ms(500);
  /*    set_adc_channel(0);
      delay_us(20);
      x_dir=Read_ADC();

      if(x_dir>=70)
      {
        output_high(PIN_D1);
        delay_ms(1000);
      }
      else
      {
         output_low(PIN_D1);
        delay_ms(1000);
      }

      printf("x_dir=%u\t",x_dir);*/

      set_adc_channel(0);
      delay_us(20);
      y_dir=Read_ADC();

        delay_ms(100);
         set_adc_channel(1);
         delay_us(20);
         z_dir=Read_ADC();
      //printf("adc value=%u\n\r",y_dir);
   // if(input(PIN_B0)) flag=0;

      if(y_dir>=80)
      {
  //      printf("right\n\r");
     /*   output_high(RF_B);
        output_low(RF_A);
        output_high(RF_C);
        output_high(RF_D);*/
        output_low(RF_B);
        output_high(RF_A);
        output_low(RF_C);
        output_low(RF_D);
        delay_ms(1000);
      }
      else if(y_dir<60)
      {
    //    printf("left\n\r");
        output_low(RF_A);
        output_high(RF_B);
        output_low(RF_C);
        output_low(RF_D);
        delay_ms(1000);
      }
     else
      {
   //     printf("normal\n\r");
        output_low(RF_A);
        output_low(RF_B);
        delay_ms(1000);

         if(z_dir<72)
         {
    //       printf("revesrse\n\r");
           output_high(RF_D);
           output_low(RF_C);
           delay_ms(1000);
         }
         else if(z_dir>90)
         {
   //        printf("forward\n\r");
           output_high(RF_C);
           output_low(RF_D);
           delay_ms(1000);
         }
        else
         {
    //       printf("Z normal\n\r");
           output_low(RF_C);
           output_low(RF_D);
           delay_ms(1000);
            flag=0;
         }
         }
         printf("Z_dir adc val=%u\n\n",z_dir);
         delay_ms(300);
         printf("y_dir adc val=%u\n\r",y_dir);

   }
}
